Dashboard: Transacciones chinas 2024

Carolina Lima Dupuy

library(flexdashboard)
library(tidyverse)
library(rio)
library(janitor)
library(plotly)
library(DT)
library(broom)
library(psych)
library(cluster)
library(factoextra)
library(sandwich)
library(lmtest)
library(car)
library(kableExtra)
library(gridExtra)
library(corrplot)
library(ggrepel)
options(scipen = 999)

Page 1: Resumen general de IED

Resumen general de IED desde China

La distribución del IED proveniente de China presenta una marcada asimetría positiva, caracterizada por una alta concentración de países en niveles de inversión reducidos y una cola extendida hacia valores elevados. Este patrón indica que, aunque la mayoría de economías recibe flujos modestos, existe un grupo reducido de países que concentra montos sustancialmente mayores, lo cual es consistente con estrategias de inversión selectiva y focalizada por parte de China.

Column

Tabla: Top 10 países por IED

La tabla de los diez países que reciben mayor inversión extranjera directa de China evidencia una fuerte concentración geoeconómica, donde solo un conjunto reducido de países captura una proporción sustantiva de los flujos totales. Este patrón confirma que la estrategia de inversión china no se distribuye de manera uniforme, sino que prioriza economías específicas que podrían ser por criterios estratégicos, estructurales o regionales.

Row

Comparaciones clave y asociaciones

  1. IED vs PBI

La relación entre la IED china y el PBI muestra una asociación positiva, aunque débil, consistente con la regresión previa: los países con economías más grandes tienden a recibir mayores flujos de inversión, pero la variabilidad es amplia y el patrón está dominado por unos pocos casos de IED excepcionalmente alta. Esto revela que el tamaño económico es un factor relevante, pero no suficiente por sí solo para explicar la distribución de la IED china.

Relación entre IED e IDI 2024

  1. IED vs IDI

El nivel de desarrollo digital no exhibe una relación clara con la IED china. La nube de puntos es dispersa y la línea de tendencia permanece prácticamente horizontal, lo que indica que la estrategia inversora de China no sigue un patrón asociado al grado de digitalización de los países.

Relación entre IED y Ayuda de EE.UU. (USADF)

  1. IED vs USADF (ayuda estadounidense)

La relación entre ayuda estadounidense e inversión china es prácticamente nula. Los valores de USADF no predicen los flujos de IED y la línea de tendencia carece de pendiente relevante. Este resultado coincide con los modelos de regresión y sugiere que la presencia de Estados Unidos en términos de cooperación no desplaza ni atrae por sí misma la inversión china.

Distribución de la IED según pertenencia a la Iniciativa BRI

  1. IED por pertenencia a la BRI

El boxplot indica que los países miembros de la Iniciativa de la Franja y la Ruta (BRI) presentan una mediana de IED mayor que los no miembros, aunque ambos grupos muestran dispersión amplia. Ello sugiere que pertenecer a la BRI incrementa la probabilidad de recibir mayores montos de inversión, pero no de manera uniforme entre los países.

Distribución de la IED según región geográfica

  1. IED por Región

Las diferencias regionales en los flujos de IED son pronunciadas. Algunas regiones concentran casos de inversión muy elevada mientras que otras muestran niveles sistemáticamente bajos. Esta heterogeneidad confirma que la distribución territorial de la IED china responde a criterios geopolíticos diferenciados entre regiones.

Matriz de correlaciones entre variables cuantitativas

La matriz de correlaciones revela asociaciones lineales débiles entre la IED china y las variables estructurales analizadas. El PBI muestra una correlación positiva muy baja (r ≈ 0.13), mientras que la ayuda estadounidense (r ≈ –0.09) y el IDI (r ≈ –0.07) presentan vínculos ligeramente negativos. De igual modo, las correlaciones entre las variables explicativas también son reducidas, sin evidencias de colinealidad sustantiva.

Page 2: Modelos de Regresión

## 
## Call:
## lm(formula = ied_china ~ bri + pbi + idi_2024 + usadf + region, 
##     data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3133.8  -516.9  -160.8   123.2 11463.4 
## 
## Coefficients:
##                                   Estimate     Std. Error t value Pr(>|t|)    
## (Intercept)                   1571.9203730    552.9646422   2.843 0.005153 ** 
## bri1                           412.4699275    373.9474477   1.103 0.271940    
## pbi                              0.0004363      0.0002142   2.037 0.043586 *  
## idi_2024                        -0.0078275      0.0148138  -0.528 0.598074    
## usadf                           -0.0014901      0.0063871  -0.233 0.815870    
## regionAustralia                596.7488474   1646.0133668   0.363 0.717502    
## regionAustralia and Oceania  -1984.2426479    964.3906386  -2.058 0.041520 *  
## regionEast Asia               -296.2393871    627.7229589  -0.472 0.637724    
## regionEurope                 -1775.8698418    473.8809344  -3.748 0.000262 ***
## regionNorth America          -1883.4517656    570.0044811  -3.304 0.001213 ** 
## regionSouth America          -1642.8398232    608.3454316  -2.701 0.007791 ** 
## regionSouth Asia             -1850.2303106    973.7439872  -1.900 0.059503 .  
## regionSoutheast Asia         -1990.5536701   1573.3691436  -1.265 0.207948    
## regionSub-Saharan Africa     -1468.3117760    476.3326837  -3.083 0.002479 ** 
## regionUSA                   -12075.5790876   6313.8542132  -1.913 0.057877 .  
## regionWest Asia              -1085.3754261    621.9228540  -1.745 0.083177 .  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1523 on 138 degrees of freedom
## Multiple R-squared:  0.2176, Adjusted R-squared:  0.1325 
## F-statistic: 2.558 on 15 and 138 DF,  p-value: 0.002152
## 
## t test of coefficients:
## 
##                                    Estimate      Std. Error t value Pr(>|t|)  
## (Intercept)                   1571.92037297    794.69660113  1.9780  0.04992 *
## bri1                           412.46992748    182.71931421  2.2574  0.02555 *
## pbi                              0.00043634      0.00029282  1.4901  0.13847  
## idi_2024                        -0.00782754      0.00487195 -1.6067  0.11042  
## usadf                           -0.00149014      0.00392248 -0.3799  0.70461  
## regionAustralia                596.74884737   1232.21508800  0.4843  0.62895  
## regionAustralia and Oceania  -1984.24264791    862.30061860 -2.3011  0.02288 *
## regionEast Asia               -296.23938709   1191.20660827 -0.2487  0.80397  
## regionEurope                 -1775.86984179    945.06887067 -1.8791  0.06234 .
## regionNorth America          -1883.45176555    854.01905254 -2.2054  0.02908 *
## regionSouth America          -1642.83982316    942.91064364 -1.7423  0.08368 .
## regionSouth Asia             -1850.23031056    845.52236571 -2.1883  0.03033 *
## regionSoutheast Asia         -1990.55367009    864.51058435 -2.3025  0.02280 *
## regionSub-Saharan Africa     -1468.31177605    892.73017291 -1.6447  0.10230  
## regionUSA                   -12075.57908758   9029.03806938 -1.3374  0.18329  
## regionWest Asia              -1085.37542612   1019.12305650 -1.0650  0.28873  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##               GVIF Df GVIF^(1/(2*Df))
## bri       1.456885  1        1.207015
## pbi      17.858166  1        4.225892
## idi_2024  1.141469  1        1.068396
## usadf     1.356243  1        1.164579
## region   27.717828 11        1.163001
## 
##  studentized Breusch-Pagan test
## 
## data:  mod_ols
## BP = 16.043, df = 15, p-value = 0.3792
## 
##  Shapiro-Wilk normality test
## 
## data:  residuals(mod_ols)
## W = 0.61724, p-value < 0.00000000000000022
Coeficientes OLS (niveles)
term estimate std.error statistic p.value
(Intercept) 1571.9204 552.9646 2.8427141 0.0052
bri1 412.4699 373.9474 1.1030158 0.2719
pbi 0.0004 0.0002 2.0367584 0.0436
idi_2024 -0.0078 0.0148 -0.5283954 0.5981
usadf -0.0015 0.0064 -0.2333059 0.8159
regionAustralia 596.7488 1646.0134 0.3625419 0.7175
regionAustralia and Oceania -1984.2426 964.3906 -2.0575092 0.0415
regionEast Asia -296.2394 627.7230 -0.4719270 0.6377
regionEurope -1775.8698 473.8809 -3.7475022 0.0003
regionNorth America -1883.4518 570.0045 -3.3042754 0.0012
regionSouth America -1642.8398 608.3454 -2.7005049 0.0078
regionSouth Asia -1850.2303 973.7440 -1.9001199 0.0595
regionSoutheast Asia -1990.5537 1573.3691 -1.2651536 0.2079
regionSub-Saharan Africa -1468.3118 476.3327 -3.0825342 0.0025
regionUSA -12075.5791 6313.8542 -1.9125527 0.0579
regionWest Asia -1085.3754 621.9229 -1.7451930 0.0832

Modelos de regresión

Para evaluar los determinantes del patrón de transacciones económicas exteriores de China (medido mediante la IED en millones de USD), se estimaron dos modelos de regresión lineal múltiple: uno en niveles y uno logarítmico. Ambos incluyen como variables explicativas la pertenencia a la Iniciativa de la Franja y la Ruta (BRI), el PBI, el nivel de desarrollo digital (IDI), la ayuda estadounidense (USADF) y la región geográfica del país.

Modelo OLS en niveles

Con errores robustos, la pertenencia al BRI muestra un efecto positivo y estadísticamente significativo (β = 412.47, p = 0.026), lo que indica que los países incorporados en esta iniciativa reciben montos mayores de IED en comparación con los no miembros. El PBI presenta un efecto positivo pero no estadísticamente significativo, mientras que el IDI y la asistencia estadounidense tampoco muestran impactos relevantes en este modelo. En cambio, varias regiones exhiben coeficientes negativos significativos, evidenciando diferencias geográficas consistentes en la distribución de la IED china. El R² ajustado es bajo (0.13) y los residuos no presentan normalidad, lo que sugiere limitaciones en el ajuste del modelo en niveles.

Modelo logarítmico

## 
## Call:
## lm(formula = log_ied ~ bri + pbi + idi_2024 + usadf + region, 
##     data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -9.8859 -2.1258 -0.0195  2.6764  6.1148 
## 
## Coefficients:
##                                   Estimate     Std. Error t value Pr(>|t|)    
## (Intercept)                   3.7287000453   1.0836471514   3.441 0.000767 ***
## bri1                          1.0695350822   0.7328263972   1.459 0.146710    
## pbi                           0.0000012012   0.0000004198   2.861 0.004878 ** 
## idi_2024                     -0.0000192757   0.0000290307  -0.664 0.507812    
## usadf                        -0.0000127735   0.0000125168  -1.021 0.309273    
## regionAustralia               2.2894587682   3.2256993666   0.710 0.479053    
## regionAustralia and Oceania  -4.7978067658   1.8899204193  -2.539 0.012238 *  
## regionEast Asia               0.4481268662   1.2301513413   0.364 0.716202    
## regionEurope                 -2.8679195436   0.9286664742  -3.088 0.002435 ** 
## regionNorth America          -4.0920189657   1.1170401960  -3.663 0.000354 ***
## regionSouth America          -1.7502323498   1.1921771189  -1.468 0.144353    
## regionSouth Asia             -4.4508224301   1.9082502161  -2.332 0.021125 *  
## regionSoutheast Asia         -4.8163824332   3.0833381748  -1.562 0.120562    
## regionSub-Saharan Africa     -1.8693077923   0.9334711777  -2.003 0.047187 *  
## regionUSA                   -31.0734967898  12.3732868442  -2.511 0.013180 *  
## regionWest Asia              -0.9173420822   1.2187848512  -0.753 0.452931    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2.984 on 138 degrees of freedom
## Multiple R-squared:  0.3094, Adjusted R-squared:  0.2343 
## F-statistic: 4.121 on 15 and 138 DF,  p-value: 0.000003324
## 
## t test of coefficients:
## 
##                                    Estimate      Std. Error t value    Pr(>|t|)    
## (Intercept)                   3.72870004534   1.11876177539  3.3329    0.001104 ** 
## bri1                          1.06953508223   0.59520551026  1.7969    0.074536 .  
## pbi                           0.00000120120   0.00000059738  2.0108    0.046296 *  
## idi_2024                     -0.00001927571   0.00002775672 -0.6945    0.488566    
## usadf                        -0.00001277347   0.00001097473 -1.1639    0.246474    
## regionAustralia               2.28945876818   1.60160641289  1.4295    0.155127    
## regionAustralia and Oceania  -4.79780676581   0.95897454496 -5.0031 0.000001689 ***
## regionEast Asia               0.44812686617   1.25775928956  0.3563    0.722168    
## regionEurope                 -2.86791954356   1.10613579694 -2.5927    0.010547 *  
## regionNorth America          -4.09201896573   1.01716733049 -4.0230 0.000094249 ***
## regionSouth America          -1.75023234980   1.32585198041 -1.3201    0.188993    
## regionSouth Asia             -4.45082243008   1.02106621910 -4.3590 0.000025352 ***
## regionSoutheast Asia         -4.81638243322   0.95767254183 -5.0293 0.000001505 ***
## regionSub-Saharan Africa     -1.86930779225   1.12955316925 -1.6549    0.100216    
## regionUSA                   -31.07349678977  17.43190117280 -1.7826    0.076856 .  
## regionWest Asia              -0.91734208221   1.48448504129 -0.6180    0.537625    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Coeficientes logarítmico (log1p)
term estimate std.error statistic p.value
(Intercept) 3.7287 1.0836 3.4408802 0.0008
bri1 1.0695 0.7328 1.4594658 0.1467
pbi 0.0000 0.0000 2.8611659 0.0049
idi_2024 0.0000 0.0000 -0.6639777 0.5078
usadf 0.0000 0.0000 -1.0205088 0.3093
regionAustralia 2.2895 3.2257 0.7097558 0.4791
regionAustralia and Oceania -4.7978 1.8899 -2.5386290 0.0122
regionEast Asia 0.4481 1.2302 0.3642860 0.7162
regionEurope -2.8679 0.9287 -3.0882126 0.0024
regionNorth America -4.0920 1.1170 -3.6632692 0.0004
regionSouth America -1.7502 1.1922 -1.4680976 0.1444
regionSouth Asia -4.4508 1.9083 -2.3324103 0.0211
regionSoutheast Asia -4.8164 3.0833 -1.5620675 0.1206
regionSub-Saharan Africa -1.8693 0.9335 -2.0025340 0.0472
regionUSA -31.0735 12.3733 -2.5113373 0.0132
regionWest Asia -0.9173 1.2188 -0.7526694 0.4529

Modelo logarítmico

Al transformar la variable dependiente, el modelo mejora su capacidad explicativa (R² ajustado ≈ 0.23) y estabiliza la varianza. En esta especificación, el PBI adquiere un efecto positivo y significativo (β = 1.20e−06, p = 0.046), lo que implica que economías más grandes tienden a recibir mayores flujos de inversión china. El coeficiente del BRI mantiene un efecto positivo y marginalmente significativo (β = 1.07, p = 0.075), sugiriendo que la pertenencia al BRI se asocia a un aumento considerable en la IED, aunque con menor precisión estadística. Los efectos regionales continúan siendo relevantes, confirmando la persistencia de patrones territoriales diferenciados.

Valores observados vs. predichos

### Influencia de países

### Gráfico combinado en Plotly

Conclusión del análisis de regresión

El modelo logarítmico representa mejor el comportamiento de los flujos de IED china. Los resultados indican que:

La pertenencia al BRI incrementa de manera significativa o marginal la IED, lo que respalda su función como instrumento de alineamiento político y económico.

El tamaño económico del país (PBI) es un determinante relevante cuando se ajusta por asimetría mediante logaritmos.

El desarrollo digital y la asistencia estadounidense no muestran efectos estadísticamente significativos en esta muestra.

Persisten diferencias regionales sustantivas, lo que evidencia que factores geográficos y estratégicos continúan guiando la asignación de la inversión exterior china.

Page 3: Análisis Factorial (PCA)

Análisis factorial (PCA)

Resultados del PCA

## Importance of components:
##                           PC1    PC2    PC3    PC4
## Standard deviation     1.1151 0.9876 0.9561 0.9311
## Proportion of Variance 0.3109 0.2439 0.2285 0.2168
## Cumulative Proportion  0.3109 0.5547 0.7832 1.0000

Cargas factoriales

##                  PC1         PC2       PC3        PC4
## ied_china  0.5727107  0.03330678 0.4461669 -0.6868975
## pbi        0.5601506 -0.28245059 0.3628745  0.6890392
## usadf     -0.4913617  0.34023152 0.7924822  0.1215657
## idi_2024  -0.3417564 -0.89630064 0.2030498 -0.1965160

El análisis factorial mediante Componentes Principales (PCA) se aplicó a las variables numéricas IED China, PBI, USADF y IDI 2024, todas previamente estandarizadas. Los dos primeros componentes explican el 55.5% de la varianza total, mientras que los tres primeros alcanzan 78.3%, lo que indica que el PCA captura adecuadamente la estructura subyacente de los datos.

El PC1 refleja una dimensión económico-estratégica, asociando mayores niveles de inversión china y tamaño económico con menor dependencia de ayuda estadounidense y desarrollo digital. El PC2 destaca la dimensión tecnológica, separando países con alto desarrollo digital de aquellos con mayor asistencia estadounidense. El PC3 evidencia un componente geopolítico, vinculado a la alineación económica hacia Estados Unidos. Finalmente, el PC4 identifica situaciones atípicas donde el tamaño económico y la IED china no coinciden, capturando casos residuales relevantes.

En conjunto, el PCA permite comprender las dimensiones económico, tecnológica y geopolítica que estructuran los flujos de inversión china en los países durante 2024.

Varianza explicada (Scree Plot)

El gráfico de sedimentación (scree plot) muestra que los dos primeros componentes explican el 55.5% de la variabilidad total, mientras que los tres primeros explican el 78.3%, lo que indica que el PCA logra capturar de manera adecuada la estructura subyacente de los datos.

Page 4: Análisis de Clúster

Análisis de Clúster: K-means

#Preparación de los datos
cluster_data <- data %>%
  select(ied_china, pbi, usadf, idi_2024) %>%
  scale()
library(factoextra)

#Determinar el número óptimo de clusters
fviz_nbclust(
  cluster_data, 
  kmeans, 
  method = "wss"
) +
  labs(title = "Método del Codo para determinar el número óptimo de clusters")

set.seed(123)

# Calcular WSS para k = 1 a 10
wss <- sapply(1:10, function(k){
  kmeans(cluster_data, centers = k, nstart = 20)$tot.withinss
})

# Determinar el codo con el método Kneedle simplificado
k_vals <- 1:10
slope <- diff(wss)

# El codo es donde el cambio en WSS se vuelve más pequeño de forma abrupta
elbow_k <- which.min(diff(slope))
elbow_k
## [1] 6
#Método Silhouette
fviz_nbclust(
  cluster_data,
  kmeans,
  method = "silhouette"
) +
  labs(title = "Método Silhouette para determinar el número óptimo de clusters")

#Ejecutar K-means
set.seed(123)
k5 <- kmeans(cluster_data, centers = 5, nstart = 25)

k5
## K-means clustering with 5 clusters of sizes 132, 9, 6, 1, 6
## 
## Cluster means:
##    ied_china         pbi       usadf   idi_2024
## 1 -0.2138273 -0.11251396  0.18279660 -0.2007616
## 2  3.1809724 -0.01336591  0.00716387 -0.2007117
## 3 -0.3609532 -0.20550285  0.18788001  4.9503849
## 4  0.9429294 11.80377153  0.19287728 -0.1984665
## 5  0.1365407  0.73356354 -4.25229723 -0.1994840
## 
## Clustering vector:
##   1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18  19  20  21  22  23 
##   1   1   1   1   2   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1 
##  24  25  26  27  28  29  30  31  32  33  34  35  36  37  38  39  40  41  42  43  44  45  46 
##   1   3   3   1   1   1   5   3   1   1   1   1   1   1   1   3   1   1   1   1   1   1   1 
##  47  48  49  50  51  52  53  54  55  56  57  58  59  60  61  62  63  64  65  66  67  68  69 
##   1   1   1   1   1   1   1   1   5   1   1   1   1   2   1   1   2   1   2   1   1   5   1 
##  70  71  72  73  74  75  76  77  78  79  80  81  82  83  84  85  86  87  88  89  90  91  92 
##   1   1   5   1   2   1   1   1   1   1   1   1   1   1   1   3   1   2   1   1   1   1   1 
##  93  94  95  96  97  98  99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 
##   5   1   1   1   1   1   1   1   1   1   1   1   1   1   2   1   1   1   1   1   1   1   1 
## 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 
##   1   1   1   1   1   1   1   1   2   1   1   1   1   1   1   1   3   1   1   1   1   1   1 
## 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 
##   1   1   1   1   1   1   2   1   1   1   4   1   1   5   1   1 
## 
## Within cluster sum of squares by cluster:
## [1] 45.45599920 34.96986226  0.04532061  0.00000000 22.00853245
##  (between_SS / total_SS =  83.3 %)
## 
## Available components:
## 
## [1] "cluster"      "centers"      "totss"        "withinss"     "tot.withinss" "betweenss"   
## [7] "size"         "iter"         "ifault"
#Visualización de clusters
fviz_cluster(
  k5,
  data = cluster_data,
  geom = "point",
  ellipse.type = "norm",
  palette = "Dark2",
  ggtheme = theme_minimal()
)
## Too few points to calculate an ellipse

Análisis de Clúster: K-means

Se aplicó un análisis de clúster mediante el método de K-means a las variables estandarizadas IED China, PBI, USADF e IDI 2024, con el objetivo de identificar grupos de países con patrones similares en términos de inversión china, tamaño económico, ayuda estadounidense y desarrollo digital.

Para determinar el número óptimo de clusters se utilizaron dos criterios: el método del codo (WSS) y el método Silhouette. El análisis indicó que entre 5 y 6 clusters es una opción adecuada; finalmente, se estimó un modelo con 5 clusters, considerando un balance entre la varianza explicada y la interpretabilidad de los grupos.

Los resultados muestran una distribución muy heterogénea entre los clusters, con tamaños que van desde un único país hasta 132 en el grupo más numeroso. Esto evidencia la existencia de un patrón dominante común entre la mayoría de países, acompañado de subgrupos pequeños con características económicas o geopolíticas muy particulares. En particular, algunos clusters concentran países con niveles extraordinariamente altos de IED china o de desarrollo digital, mientras que otros reflejan perfiles más moderados y equilibrados.

La proporción de varianza explicada entre grupos es elevada (83.3%), lo que indica que el modelo logra capturar diferencias sustantivas en la estructura multivariada de los datos. Además, la visualización mediante K-means muestra una separación clara entre los conglomerados, especialmente en los casos extremos, lo que refuerza la validez de la partición identificada. En conjunto, el análisis permite reconocer conjuntos de países con perfiles económicos y estratégicos similares, ofreciendo una base sólida para estudiar patrones internacionales de inversión china y orientar comparaciones o políticas de cooperación.

PAM (K–Medoides)

## [1] 0.2257394 0.2956669 0.3497490 0.4136873 0.4934923 0.5440343 0.6353712 0.6764692 0.7230740
## [1] 10

PASO 1 — Ejecutar PAM con K=10

set.seed(123)

# Ejecutar PAM con K óptimo
pam_final <- pam(gower_dist, k = k_optimo, diss = TRUE)

PASO 2 — Agregar el cluster a la base

# Agregar la columna de clusters al dataframe original
pam_data$pam_cluster <- pam_final$cluster

# Ver resumen de clusters
table(pam_data$pam_cluster)
## 
##  1  2  3  4  5  6  7  8  9 10 
## 39 28 15 17 10 10 10  9  6 10

PASO 3 — Ver siluetas del modelo

fviz_silhouette(pam_final)
##    cluster size ave.sil.width
## 1        1   39          0.62
## 2        2   28          0.90
## 3        3   15          0.80
## 4        4   17          0.48
## 5        5   10          0.74
## 6        6   10          0.88
## 7        7   10          0.47
## 8        8    9          0.99
## 9        9    6          0.77
## 10      10   10          0.71

El análisis de k-medoides (PAM), aplicado sobre una matriz de distancia Gower que incorpora variables numéricas y categóricas, mostró que el número óptimo de clusters es k = 10, de acuerdo con el mayor ancho promedio de silueta (0.723). Este valor es elevado, lo que indica una estructura de conglomerados bien definida y una separación clara entre los grupos. La distribución resultante (entre 6 y 39 países por cluster) evidencia heterogeneidad en los patrones económicos, digitales y geopolíticos que caracterizan a los países estudiados.

PASO 4 - Marcas los países mal clusterizados

library(cluster)

# Calcular silhouette real
sil <- silhouette(pam_final$cluster, gower_dist)

# Crear data frame con nombres y silhouette
sil_df <- data.frame(
  country = rownames(pam_data),
  sil_width = sil[, "sil_width"]
)

# Extraer países mal clusterizados
poorPAM <- sil_df[sil_df$sil_width < 0, "country"] %>% sort()
poorPAM
##  [1] "Afghanistan" "Australia"   "Brunei"      "Eswatini"    "Japan"       "Maldives"   
##  [7] "Paraguay"    "Samoa"       "Tonga"       "Vanuatu"

PASO 5 — Agregar esta información al dataframe

pam_data <- pam_data %>%
  mutate(pam_poor = country %in% poorPAM)
data$pam_cluster <- pam_data$pam_cluster
data$pam_poor <- pam_data$pam_poor

AGNES (Jerárquico Aglomerativo)

# Preparar datos
library(cluster)
library(dplyr)
library(factoextra)

# Seleccionar variables para AGNES
agnes_data <- data %>%
  select(country, ied_china, pbi, usadf, idi_2024, region, bri)

# Guardar nombres de fila
row.names(agnes_data) <- agnes_data$country

# Crear matriz de distancia Gower
agnes_dist <- daisy(agnes_data %>% select(-country), metric = "gower")
set.seed(123)

res.agnes <- agnes(
  agnes_dist,
  diss = TRUE,
  method = "ward"
)
# Determinar número óptimo de clusters
library(cluster)

sil_width_agnes <- c()
for (k in 2:10) {
  tmp_cluster <- cutree(as.hclust(res.agnes), k = k)
  sil <- silhouette(tmp_cluster, dist(agnes_dist))
  sil_width_agnes[k] <- mean(sil[, 3])
}

# Mostrar valores de silhouette promedio
sil_width_agnes
##  [1]        NA 0.5313994 0.4300172 0.5043010 0.4896157 0.5147813 0.5184167 0.5279951
##  [9] 0.6153288 0.6599089
# Elegir K con mayor silhouette
k_optimo_agnes <- which.max(sil_width_agnes)
k_optimo_agnes
## [1] 10
agnes_clusters <- cutree(as.hclust(res.agnes), k = k_optimo_agnes)

# Agregar al dataframe original
agnes_data$agnes_cluster <- agnes_clusters

# Revisar primeros 15 países con clusters
head(agnes_data, 15)
# Visualizar dendrograma y silhouettes

# Dendrograma
fviz_dend(res.agnes, cex = 0.7, horiz = TRUE, main = "")

# Silhouette
fviz_silhouette(silhouette(agnes_clusters, dist(agnes_dist)), print.summary = FALSE)

El agrupamiento jerárquico aglomerativo (AGNES), aplicado sobre una matriz de distancia Gower que combina variables económicas, digitales y categóricas, mostró que el número óptimo de clusters es k = 10, según el mayor ancho promedio de silueta (0.66). Este valor es relativamente alto para datos multivariados mixtos, lo que indica que los clusters formados presentan buena cohesión interna y separación entre grupos. El dendrograma evidencia divisiones bien definidas, especialmente entre países con altos niveles de desarrollo digital, aquellos con fuerte penetración de ayuda estadounidense y un pequeño subconjunto con niveles elevados de IED china.

# Identificar países mal clusterizados
silAGNES <- data.frame(
  country = rownames(agnes_data),
  sil_width = silhouette(agnes_clusters, dist(agnes_dist))[, "sil_width"]
)

poorAGNES <- silAGNES %>% 
  filter(sil_width < 0) %>% 
  arrange(country)

poorAGNES$country
## [1] "Afghanistan"  "Bhutan"       "Brunei"       "Eswatini"     "Maldives"     "Samoa"       
## [7] "Saudi Arabia" "Tonga"        "Vanuatu"
#Revisar promedio de cada cluster
aggregate(. ~ agnes_cluster, data = agnes_data %>% select(-country), mean)
#Agregar los clusters AGNES a tu dataset principal
data$agnes_cluster <- agnes_data$agnes_cluster
rm(agnes_data)

DIANA (Jerárquico Divisivo)

# Preparar datos
library(cluster)
library(dplyr)
library(factoextra)

# Seleccionar variables para DIANA
diana_data <- data %>%
  select(country, ied_china, pbi, usadf, idi_2024, region, bri)

# Guardar nombres de fila
row.names(diana_data) <- diana_data$country

# Crear matriz de distancia Gower
diana_dist <- daisy(diana_data %>% select(-country), metric = "gower")
set.seed(123)

res.diana <- diana(diana_dist)
# Determinar número óptimo de clusters
sil_width_diana <- c()
for (k in 2:10) {
  tmp_cluster <- cutree(as.hclust(res.diana), k = k)
  sil <- silhouette(tmp_cluster, dist(diana_dist))
  sil_width_diana[k] <- mean(sil[, 3])
}

# Ver valores promedio de silhouette
sil_width_diana
##  [1]        NA 0.5541644 0.5312889 0.2402458 0.2264013 0.2858996 0.3083896 0.3073399
##  [9] 0.3152715 0.4546948
# Elegir K óptimo
k_optimo_diana <- which.max(sil_width_diana)
k_optimo_diana
## [1] 2
# Cortar dendrograma con K óptimo
diana_clusters <- cutree(as.hclust(res.diana), k = k_optimo_diana)
# Agregar clusters al dataframe
diana_data$diana_cluster <- diana_clusters

# Revisar primeros 15 países
head(diana_data, 15)
# Visualizar dendrograma y silhouettes

# Dendrograma
fviz_dend(res.diana, cex = 0.7, horiz = TRUE, main = "")

# Silhouette
fviz_silhouette(silhouette(diana_clusters, dist(diana_dist)), print.summary = FALSE)

El método divisivo DIANA identificó que el número óptimo de clusters es K = 2, de acuerdo con el máximo ancho de silueta promedio (0.55). Este valor indica una separación moderadamente clara entre dos grandes grupos de países. El primer cluster agrupa economías con valores relativamente bajos de IED china, PBI y digitalización, mientras que el segundo concentra países con niveles significativamente más altos en estas variables o con patrones geopolíticos distintivos. El dendrograma muestra una división inicial fuerte, característica del enfoque divisivo, lo que sugiere que la principal separación en los datos ocurre entre dos estructuras socioeconómicas amplias.

#Identificar países mal clusterizados

silDIANA <- data.frame(
  country = rownames(diana_data),
  sil_width = silhouette(diana_clusters, dist(diana_dist))[, "sil_width"]
)

poorDIANA <- silDIANA %>%
  filter(sil_width < 0) %>%
  arrange(country)

poorDIANA$country
## character(0)
#Revisar promedio de cada cluster
aggregate(. ~ diana_cluster, data = diana_data %>% select(-country), mean)
# Agregar los clusters DIANA al dataset principal
data$diana_cluster <- diana_data$diana_cluster

# Marcar países mal clusterizados
data$diana_poor <- data$country %in% poorDIANA$country

# Eliminar la tabla auxiliar de DIANA
rm(diana_data)

Page 5: Visualización Comparativa

### Visualización comparativa

# Escalamiento Multidimensional (MDS)
proyeccion <- cmdscale(gower_dist, k = 2, add = TRUE)

# Agregar coordenadas al dataset principal
data$dim1 <- proyeccion$points[, 1]
data$dim2 <- proyeccion$points[, 2]

# Convertir clusters a factor (ya están en 'data')
data$pam_cluster <- as.factor(data$pam_cluster)
data$agnes_cluster <- as.factor(data$agnes_cluster)
data$diana_cluster <- as.factor(data$diana_cluster)

# Crear indicadores de países mal clusterizados
data$pamIDHpoor <- data$country %in% poorPAM
data$agnesIDHpoor <- data$country %in% poorAGNES$country
data$dianaIDHpoor <- data$country %in% poorDIANA$country
# Base del gráfico
library(ggplot2)
library(ggrepel)

base <- ggplot(data, aes(x = dim1, y = dim2)) +
        theme_minimal() +
        labs(subtitle = "Se destacan los países mal clusterizados")
# Gráfico PAM

PAMlabels <- ifelse(data$pamIDHpoor, data$country, '')

pamPlot <- base +
  geom_point(aes(color = pam_cluster), size = 3) +
  labs(title = "PAM") +
  geom_text_repel(aes(label = PAMlabels), 
                  size = 4, max.overlaps = 200,
                  min.segment.length = unit(0, 'lines'))
pamPlot

  1. Interpretación del gráfico PAM

El gráfico PAM evidencia una estructura muy fragmentada, con 10 clusters dispersos y varios países ubicados cerca de fronteras entre grupos. Los puntos se encuentran relativamente mezclados y se observan múltiples casos mal asignados (silhouette < 0), lo que indica que el algoritmo no logra un particionado estable ni bien separado en el espacio MDS. La sobresegmentación produce clusters pequeños y poco consistentes, reduciendo la interpretabilidad del modelo.

# Gráfico AGNES

AGNESlabels <- ifelse(data$agnesIDHpoor, data$country, '')

agnesPlot <- base +
  geom_point(aes(color = agnes_cluster), size = 3) +
  labs(title = "AGNES") +
  geom_text_repel(aes(label = AGNESlabels), 
                  size = 4, max.overlaps = 200,
                  min.segment.length = unit(0, 'lines'))

agnesPlot

  1. Interpretación del gráfico AGNES

En el caso de AGNES, aunque también se genera una partición en 10 clusters, la separación entre grupos es algo más clara que en PAM. Sin embargo, aún persisten varios países mal clusterizados y solapamientos visibles entre regiones del espacio MDS. Esto sugiere que el método aglomerativo detecta ciertas estructuras, pero la elección de un número tan alto de grupos afecta su fortaleza clasificatoria y genera resultados menos estables.

# Gráfico DIANA

DIANAlabels <- ifelse(data$dianaIDHpoor, data$country, '')

dianaPlot <- base +
  geom_point(aes(color = diana_cluster), size = 3) +
  labs(title = "DIANA") +
  geom_text_repel(aes(label = DIANAlabels), 
                  size = 4, max.overlaps = 50,
                  min.segment.length = unit(0, 'lines'))

dianaPlot

3. Interpretación del gráfico DIANA

El modelo DIANA muestra una separación nítida en solo dos clusters, con grupos bien definidos y sin solapamiento visible entre las clases. La distribución es limpia, los conglomerados están compactos y no se observan países mal asignados, lo que indica una coherencia alta entre la distancia Gower y la partición seleccionada. La estructura divisiva captura adecuadamente la principal ruptura entre países según las variables económicas y geopolíticas.

Comparando los tres métodos, DIANA es claramente el modelo superior. Su partición presenta:

✔ Separación clara entre grupos ✔ Ningún país mal clusterizado ✔ Mayor consistencia interna (mayor silhouette promedio) ✔ Mejor interpretabilidad estructural

Tanto PAM como AGNES generan demasiados clusters y producen errores de asignación, mientras que DIANA ofrece una clasificación robusta, coherente y fácilmente interpretable para esta base de datos.